package modelo;

import java.awt.Point;

public class Misil extends Arma{
	
	public Misil() {

		this.unidadeDeVida = 1;
		this.alcance = 5;
		this.ondaExpansiva = 1;
		this.tiempoRetardo = 3;
		this.danio = 5;
		
	}
	

	@Override
	public void daniar(Casillero casillero){
		casillero.impactoMisil(this);
	}

	
	
	
	@Override
	public boolean validoLanzarA(Point posicion){
		int distancia = (int)this.posicion.distance(posicion);
		distancia -= distancia % 1;
		
		return (distancia <= this.alcance);
	}
	
	
	
	public Point direccionX(){
		if(this.destino.getX() - this.posicion.getX() > 0){
			return new Point((int)this.posicion.getX()+1,(int)this.posicion.getY());
		}
		
		return new Point((int)this.posicion.getX()-1,(int)this.posicion.getY());
		
	}
	
	
	public Point direccionY(){
		
		if(this.destino.getY() - this.posicion.getY() > 0){
			return new Point((int)this.posicion.getX(),(int)this.posicion.getY()+1);
		}
		
		return new Point((int)this.posicion.getX(),(int)this.posicion.getY()-1);
		
	}
	
	
	public Point siguientePosicion(){
		
		int distanciaX = (int)Math.abs(this.destino.getX() - this.posicion.getX()); 
		int distanciaY = (int)Math.abs(this.destino.getY() - this.posicion.getY()); 
		
		if (distanciaX >= distanciaY){
			return this.direccionX();
		}
		
		return this.direccionY();
		
	}
	
	
	@Override
	public void movimiento(Mapa mapa){

		mapa.cambiarPosicionContenido(this, this.siguientePosicion());
	}	
}
